home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat80 / aive / aive.docf < prev    next >
Text File  |  1994-09-11  |  16KB  |  376 lines

  1.                            Amiga Image ViewEr
  2.                               version 1.7f
  3.                              Septembre 1994
  4.  
  5.  
  6. Rôle : Afficher des images en 256 couleurs sur un Amiga de base .
  7. ------
  8.  
  9.    Le but de ce programme est de permettre à une personne ne disposant pas
  10. d'une machine très puissante (type A500) de visualiser des images GIF et IFF
  11. comportant 256 couleurs dans n'importe laquelle des résolutions supportées
  12.  par l'Amiga de base. Théoriquement, une image de 1024x1024 par 256 couleurs
  13. peut être affichée avec seulement 512 Ko de chip.
  14.  
  15. Copyright :
  16. -----------
  17.    AIVE est (c) 1994 Laurent Vivier . Il ne peut être vendu dans un but
  18. commercial sans mon autorisation écrite . Tout distribution ne peut exiger
  19. plus de 15FF de frais . Plus généralement, je n'autorise personne à
  20. distribuer ce logiciel dans un but lucratif sans mon autorisation écrite .
  21.    Ce logiciel ne peut être distribué séparé de sa documentations . Les
  22. fichiers "AIVE","AIVE.docF" ne peuvent donc être séparés .
  23.  
  24.    Ce logiciel est "Freeware", vous pouvez me contacter pour demander de
  25. l'aide ou poser des questions, des suggestions.
  26.  
  27. Avertissement :
  28. ---------------
  29.  
  30.    Je décline toute responsabilité quant à l'utilisation de ce logiciel .
  31. Toute utilisation se fait à vos risques et périls .
  32.  
  33. Contact :
  34. ---------
  35.  
  36.    Adresse postale :
  37.  
  38.             Laurent Vivier
  39.             Avenue Général De Gaulle
  40.             38380 Saint Laurent du Pont
  41.             FRANCE
  42.  
  43.    Adresse électronique : Sans (à mon grand regret)
  44.  
  45. Formats Supportés : GIF87a,GIF89a (entrelacé ou non), IFF (sauf HAM).
  46. -------------------
  47.  
  48. The Graphic Interchange Format(c) is the Copyright property of
  49. CompuServe Incorporated. GIF(sm) is a Service Mark property of
  50. CompuServe Incorporated.
  51.  
  52. Utilisation :
  53. -------------
  54.  
  55.    AIVE peut être appelé à partir du CLI (ou Shell) ou du Workbench.
  56.  
  57. Paramètres supportés depuis le CLI :
  58. ------------------------------------
  59.  
  60.    Le nom du fichier ainsi que les options d'affichage se font par passage
  61. des paramètres depuis la ligne de commande.
  62.  
  63.    Les paramètres supportés sont affichés si on lance AIVE sans paramètres !
  64.  
  65. AIVE name [hire|lore|ehb][nolace][grey|gray][scale][color #colors]
  66.           [width w][heighth][ratio a/b]
  67.           [dither none|fs1|fs2]
  68.           [smooth none|gs1|gs2]
  69.  
  70.  
  71.    HIRE,LORE,EHB : spécifie le mode graphique à utiliser
  72.    HIRE : haute résolution
  73.    LORE : basse résolution
  74.    EHB  : Extra-Half-Bright
  75. Le mode d'affichage par défaut est HAM .
  76.  
  77. NOLACE : par défaut l'affichage se fait en mode entrelacé, cette option
  78.          l'inhibe .
  79.  
  80. GREY   : affiche l'image en niveau de gris (16 couleurs, HIRE)
  81.  
  82. COLOR n : permet d'indiquer le nombre de couleurs a utiliser (>= 8,
  83.           par défaut le maximum) . Conjugué avec GREY, indique le nombre
  84.           de niveaux de gris .
  85.  
  86. SCALE : l'image est automatiquement réduite pour rentrer entièrement dans
  87.         l'écran
  88.  
  89. WIDTH w : w est la largeur maximale de l'image
  90.  
  91. HEIGHT h : h est la hauteur maximale de l'image
  92.  
  93. RATIO a/b : rapport de déformation de l'écran .
  94.             Soit x et y, respectivement la largeur et la hauteur d'un
  95.             point élémentaire de l'écran, alors : y = x * (a/b)
  96.             par défaut : a/b = 1/2 en LORE (HAM,EHB)
  97.                              = 1/1 en LORE et NOLACE
  98.                              = 1/1 en HIRE
  99.                              = 2/1 en HIRE et NOLACE
  100.             Je suis bien conscient que ces coefficients ne sont pas
  101.             réalistes (si on se réfère aux spécifications du format IFF,
  102.             les bonnes valeurs sont 5/11, 10/11, 20/11) . Mais ceux-ci
  103.             pouvant varier d'un écran à l'autre en fonction des réglages,
  104.             de la fréquence (NTSC/PAL), d'une image à l'autre, toute autre
  105.             valeur ne pourrait être que spécifique à MON écran . Alors, à
  106.             vous de faire le boulot (une méthode consiste à dessiner un
  107.             rectangle à l'écran, même nombre de points hauteur/largeur, de
  108.             prendre un décimètre pour mesurer ses côtes sur l'écran, et de
  109.             faire le rapport)
  110.  
  111. DITHER NONE : pas de dithering (propagation de l'erreur)
  112.        FS1  : dithering unidirectionne, l'erreur est propagée uniquement sur
  113.               la ligne.
  114.        FS2  : dithering bidirectionnel, l'erreur est propagée sur la ligne
  115.               sur les colonnes (option par défaut)
  116. La méthode utilisée est celle de Floyd-Steinberg.
  117.  
  118. SMOOTH NONE : pas de smoothing (lissage) (option par défaut)
  119.        GS1  : le filtre utilisé est un filtre gaussien à 1 dimension
  120.        GS2  : le filtre utilisé est un filtre gaussien à 2 dimensions
  121.  
  122. Note :
  123.   Il m'a semblé utile de rajouter le smoothing parce que certains images
  124. qui ont déja subi un dithering (conversion du JPEG vers le GIF) ressortent
  125. très mal en mode HAM. Avec le smoothing, j'essaye d'annuler le dithering
  126. précédent. De plus, le smoothing à 2 dimensions permet d'éliminer quelque
  127. peu l'effet de clignotement en mode entrelacé.
  128.  
  129. Exemple :
  130.  
  131. On veut afficher l'image cindy.gif (800x600) dans un écran de taille
  132. standard, un utilisant le dithering bidirectionnel et le smooting à 2
  133. dimensions.
  134.  
  135.    aive cindy.gif scale smooth GS2
  136.  
  137. On notera que le smoothing bidirectionnel et le mode HAM sont valides par
  138. défaut.
  139.  
  140. La même image, mais sur un écran 100x100, sans smoothing ou dithering, avec
  141. un rapport de déformation de 5/11 (en basse résolution) :
  142.  
  143.    aive cindy.gif lore dithering none ratio 5/11 width 100 height 100
  144.  
  145.  
  146. Tool types depuis le Workbench :
  147. --------------------------------
  148.  
  149.    Pour démarrer AIVE depuis le Workbench, il faut sélectionner son icône
  150. (inversion des couleurs), puis appuyer sur shift en double-cliquant sur
  151. l'icône de l'image à afficher.
  152.  
  153. Les tool types donnent les options à aive depuis le Workbench, comme
  154. les paramètres depuis le CLI.
  155.  
  156.    Les tool types se trouvent dans l'icône des fichiers. On peut modifier
  157. les tool types d'un fichier en sélectionnant son icône avec la souris puis
  158. en choisissant "Information" (Amiga-Gauche I) dans le menu du workbench
  159. "Icons". On ajoute des tool types avec "New", on en supprime avec "Del".
  160.  
  161.    Lorsque l'on lance AIVE, il lit tout d'abord les tool types de son icône,
  162. puis ceux de l'icône de l'image sélectionnée. Par conséquent, les tool types
  163. de l'image son plus prioritaires que ceux stockés dans l'icône de AIVE.
  164.  
  165. Les tool types pris en compte sont :
  166.  
  167. MODE=HAM       pour sélectionner le mode HAM
  168. MODE=HIRE      la haute résolution
  169. MODE=LORE      la basse résolution
  170. MODE=EHB       le mode Extra-Half-Bright
  171.  
  172. COLOR=n        où "n" est le nombre de couleurs à utiliser (ou niveau de
  173.                gris)
  174.  
  175. INTERLACED=YES pour sélectionner le mode entrelacé
  176. INTERLACED=NO  sinon
  177.  
  178. GREY=YES       pour sélectionner l'affichage en niveau de gris
  179.                (GRAY et GREY sont synonymes)
  180. GREY=NO        sinon
  181.  
  182. SCALE=YES      l'image est autmatiquement diminuer pour rester dans l'écran
  183. SCALE=NO       sinon
  184.  
  185. WIDTH=w        où "w" est la largeur maximum de l'écran
  186.  
  187. HEIGHT=h       où "h" est la hauteur maximum de l'écran
  188.  
  189. RATIO=a/b      où a/b est le coefficient de déformation
  190.  
  191. DITHER=NONE    pour inhiber le dithering
  192. DITHER=FS1     pour sélectionner le dithering unidimensionnel
  193. DITHER=FS2     pour sélectionner le dithering bidimensionnel
  194.  
  195. SMOOTH=NONE    pour inhiber le smoothing
  196. SMOOTH=GS1     pour sélectionner le smoothing unidirectionnel
  197. SMOOTH=GS2     pour sélectionner le smoothing bidirectionnel
  198.  
  199. Les valeurs par défauts sont :  MODE=HAM, INTERLACED=YES, SCALE=NO, GREY=NO,
  200. DITHER=FS2, SMOOTH=NONE. WIDTH, HEIGHT, RATIO, et COLOR ont les valeurs
  201. standard inhérentes au mode d'écran sélectionnée.
  202.  
  203. Note : On peu insérer des espaces entre les mots et "=".
  204.  
  205. Exemple :
  206.  
  207. Si les tool types de AIVE sont : MODE=HAM, GREY=NO, INTERLACED=YES
  208. et les tool types de l'image sont : MODE=HIRE, GREY=YES, RATIO=10/11
  209.  
  210. Les tool types utilisé seront : MODE=HIRE, GREY=YES, INTERLACED=YES,
  211. RATIO=10/11, DITHER=FS2, SMOOTH=NONE.
  212.  
  213. Interface :
  214. -----------
  215.  
  216.    Après lancement, une fenêtre s'ouvre . On y trouve le nom de l'image en
  217. cours de chargement, son type (GIF87a, GIF89a, IFF ...), ses dimensions,
  218. ainsi qu'une barre reflétant la progression du décodage . Un bouton "Stop"
  219. permet d'arrèter la lecture, et de quitter le programme . Le recourci
  220. clavier est la touche "ESC" sélectionnée. On peut échanger les écrans avec
  221.  [Amiga-Gauche m], on peut faire apparaitre l'écran Workbench en premier
  222.  plan avec [Amiga-Gauche n]. L'action de cliquer sur l'image à pour effet de
  223. ramener l'écran du workbench au premier plan et de rendre active la fenêtre
  224. d'information concernant l'image.
  225.  
  226. A noter : Sous OS2.0, il est possible d'afficher des images plus grandes
  227. que l'écran; rien de spéciale n'a été fait pour les parcourir, la seule
  228. solution existante est celle donnée par le système, c'est-à-dire presser
  229. la touche Amiga-Gauche en même temps que le bouton gauche de la souris,
  230. et déplacer la souris pour déplacer l'image .
  231.    Sous OS1.3, ce problème ne se rencontre pas : il est impossible d'ouvrir
  232. un écran plus grand, l'image est mise à l'échelle dans une taille standard
  233. (PAL ou NTSC) .
  234.  
  235.  
  236. techniques Utilisées :
  237. ----------------------
  238.  
  239.    Toutes les images subissent un dithering de type Floyd-Steinberg, qui
  240. consiste en une propagation de l'erreur aux points voisins . Il peut être
  241. unidirectionnel ou bidirectionnel. Dans le premier cas, la totalité de
  242. l'erreur est reportée au point suivant, dans le deuxième l'erreur est
  243. répartie entre le point suivant et ses voisins de la ligne suivante.
  244.                  
  245.    L'affichage en niveau de gris, qui je pense est ce que l'on peut faire
  246. de mieux sur un Amiga avec le chip set de base, utilise les coefficients de
  247. luminosité de la Commision Internationale de l'Eclairage (CIE), c'est-à-dire
  248. que chaque composante est pondérée par une valeur proche de la sensibilite de
  249. l'oeil, lors du calcul de la moyenne donnant l'intensité du niveau de gris .
  250.  
  251.    La recherche de la couleur la plus proche se fait en se projetant dans
  252. l'espace tridimensionel raporté aux composantes . Cela reviens à calculer
  253. la distance la plus courte dans cet espace . Cet espace est dilaté par les
  254. coefficients cités précédemment .
  255.  
  256.    L'extraction de la palette de couleurs se fait gràce à une méthode
  257. personnelle qui consiste à agglomérer les couleurs en ilots de proximité dans
  258. l'espace . On découpe l'espace en un nombre de sous-espaces, ce nombre est
  259. le nombre de couleurs désirées . La valeur de la couleur associée au
  260. sous-espace est le barycentre des couleurs de la palette d'origine contenu
  261. dans ce sous-espace .
  262.  
  263.    L'affichage a été accéléré par rapport à la version 1.0 en stockant les
  264. calculs au fur et à mesure de l'affichage (utilise une vingtaine de Ko en
  265. plus)
  266.  
  267.    La mise à l'échelle se fait gràce à une routine en assembleur n'utilisant
  268. aucun nombre en virgule flottante . La technique employée peut s'apparenter
  269. aux techniques utilisées pour faire de l'anti-aliasing.
  270.  
  271.    Le smoothing se fait en faisant un convolution entre :
  272.       - pour le cas à une dimension, la matrice comprenant les points de la
  273. ligne et la matrice gaussienne [1 2 1].
  274.       - pour le cas à deux dimensions, la matrice comprenant 3 lignes, la
  275. ligne du milieu étant la ligne courante et la matrice : +-     -+
  276.                                                         | 1 2 1 |
  277.                                                         | 2 4 2 |
  278.                                                         | 1 2 1 |
  279.                                                         +-     -+
  280.  
  281. Compatibilité :
  282. ---------------
  283.    Ce soft a commencé à être développer sous Kickstart 1.2, Workbench 1.3 .
  284. Lors de sa diffusion, son développement se faisait sous 2.0, il devrait donc
  285. fonctionner sous tous les systèmes . Il a été rapidement testé sous 2.0 avec
  286. émulateur kickstart 1.3, à première vue il ne parait pas y avoir de
  287. problèmes .
  288.  
  289.    Il se peut qu'il y ait des problèmes sur des machines comportant des
  290. cartes graphiques : je n'utilise pas la fonction WritePixel de la
  291. graphics.lib pour écrire à l'écran, mais écris directement en mémoire, dans
  292. un but de rapidité .
  293.  
  294.    Toutes l'activité de test s'est faite sur mon A500 :
  295.    carte mère rev 5a, OS2.0, 2 drives DDDS, 512 FAST, 512 CHIP .
  296.  
  297.    AIVE fonctionne sur A1200, mais n'exploite pas les mode AGA
  298.    (mais est beaucoup plus rapide et permet de visualiser des images
  299.     en 1024x768 grâce à l'option de redimmensionnement)
  300.  
  301. bogues connus :
  302. ---------------
  303.    - l'option scale ne marche pas correctement avec les GIF entrelacés.
  304.    - le smoothing n'est pas implanté pour l'affichage en niveau de gris
  305.    - quelque fois, on peut voir apparaitre des points parasites sur le coté
  306.      gauche
  307.    - quelque soit le nombre de couleurs affichées, le nombre de plans
  308.      utilisés est toujours le maximum (4 en haute-résolution, 5 en basse)
  309.  
  310. Remerciements :
  311. ---------------
  312.  
  313.    Frédéric Elisei   Archimediste génial, qui a fourni de l'eau a mon moulin
  314.    Franck Lyonnet    idem
  315.                      Voyez leurs viewers JPEG sur Acorn Archimede 5000,
  316.                      qui tourne plus vite que n'importe quels viewers GIF
  317.                      sur Amiga (500 !) .
  318.    Roger Wilson      pour un article sur son soft ChangeFSI
  319.    Steven A. Bennet  auteur d'un décodeur GIF dont je me suis inspiré
  320.    Cindy Crowford    pour sa plastique superbe (motivante !)
  321.  
  322.    UFR Informatique  qui m'a permis de découvrir le réseau internet, et donc 
  323.    et mathématiques  l'accès a un nombre important d'informations
  324.    appliquées de     (Merci aux administrateurs système)
  325.    Grenoble
  326.  
  327. Injures :
  328. -----------
  329.  
  330.    Mes Profs         Que je maudits sur quinze générations pour m'avoir
  331.    de DESS G.I.      donné du travail supplémentaire pendant les vacances de
  332.                      l'été 1994
  333.  
  334. Historique :
  335. ------------
  336. Janvier 1994   version 1.0    première distribution
  337. Janvier 1994   version 1.2    correction de 2 lègers bugs :
  338.                               - plantage sur des images de largeur impaire
  339.                               - légère correction du dithering pour éviter
  340.                                 un effet de saturation .
  341. Mars 1994      version 1.5    correction d'autres bugs :
  342.                               - impossibilité d'afficher en grey avec low
  343.                                 resolution .
  344.                               - impossibilité de faire un dégradé de gris
  345.                                 avec moins de 16 niveaux .
  346.                               Evolution :
  347.                               - Accélération du dithering (un gain de 2 ou 3)
  348.                               - mise en place des routines de changement
  349.                                 de taille de l'image
  350. Avril 1994     version 1.7    Correction de bugs :
  351.                               - permettre l'affichage d'images IFF
  352.                                 comportant moins de 256 couleurs.
  353.                               - détection des images IFF qui ne sont pas
  354.                                 compressées par ligne mais sur la
  355.                                 totalité de l'image (ce sont généralement
  356.                                 des fichier ".pic", AIVE ne peut pas les
  357.                                 afficher)
  358.                               Evolution :
  359.                               - optimisation du chargeur IFF
  360.                               - permettre le démarrage depuis le workbench
  361.                               - possibilité de désactiver le dithering
  362.                               - ajout du dithering 1D
  363.                               - smoothing
  364. Septembre      version 1.7f   Evolution :
  365. 1994                          - l'interface est modifiée pour afficher les
  366.                                 messages d'erreurs en français et dans un
  367.                                 requester système si le programme est lancé
  368.                                 depuis le workbench.
  369.                               - le fait de cliquer sur l'image fait basculer
  370.                                 vers le workbench.
  371.  
  372. Auteur : Laurent Vivier
  373. --------
  374.  
  375. Que la force soit avec Amiga...
  376.